﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Web.Security;

namespace BookStore
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WSNXBSaiGon : System.Web.Services.WebService
    {
        // Tạo kết nối toàn cục để sử dụng cho WS
        private static SqlConnection conn = new SqlConnection(ConfigurationManager
                                                    .ConnectionStrings["BookStoreConnectionString"]
                                                    .ConnectionString);


        /*************************************************************************************************************************/
        [WebMethod(Description = "Dịch vụ cho phép người dùng cập nhật đơn giá mới của một sach", CacheDuration = 60, EnableSession = true)]
        public int InventoryUpdate(int ProductID, float PricePerUnit)
        {
            //if (Session["username"] != null)
            //{
                string str = "UPDATE Sach SET DonGia =" + PricePerUnit + " WHERE MaSach =" + ProductID;
                int count = 0;

                SqlCommand cmd = new SqlCommand(str, conn);
                conn.Open();
                count = cmd.ExecuteNonQuery();
                conn.Close();
                    
                if (count > 0)
                    return 1;
                else
                    return 0;
            //}
            //return -1;
        }



        /*************************************************************************************************************************/ 
        [WebMethod(Description = "Dịch vụ cho phép người dùng đăng nhập vào WS", CacheDuration = 60, EnableSession = true)]
        public int WSLogin(string UserName, string Pwd)
        {
            if (Membership.ValidateUser(UserName, Pwd))
            {
                Session["username"] = UserName;
                Session.Timeout = 5;


                return 1;
            }
            else
                return 0;
        }


        /*************************************************************************************************************************/
        [WebMethod(Description = "Dịch vụ cho phép người dùng kiểm tra đã đăng nhập vào ws chưa", CacheDuration = 60, EnableSession = true)]
        public bool IsAuthenticated()
        {
            if (Session["username"] != null)
                return true;
            else
                return false;
        }


        /*************************************************************************************************************************/
        // Mô tả  : WS đăng xuất
        [WebMethod(Description = "Dịch vụ cho phép người dùng đăng xuất tài khoản", CacheDuration = 60, EnableSession = true)]
        public void LogOut()
        {
            Session["username"] = null;
        }




        [WebMethod(Description = "Dịch vụ cho phép người dùng lay danh sach sach", CacheDuration = 60, EnableSession = true)]
        public List<BookWS> GetListBook()
        {
            //if (Session["username"] != null)
            //{
                //string TenNXB = LayTenNhaXuatBan(Session["username"].ToString());
                string TenNXB = LayTenNhaXuatBan("guest");
                conn.Open();
                List<BookWS> ls = new List<BookWS>();
                SqlDataAdapter adapter = new SqlDataAdapter("select Sach.MaSach as 'MaSach', Sach.TenSach as 'TenSach', Sach.SoLuong as 'SoLuong', Sach.DonGia as 'DonGia', NhaXuatBan.TenNXB as 'TenNXB' "
                                                                + "from Sach left join NhaXuatBan "
                                                                + "on Sach.MaNXB = NhaXuatBan.MaNXB "
                                                                + "Where NhaXuatBan.TenNXB = '" + TenNXB + "' ", conn);
                DataSet ds = new DataSet();
                adapter.Fill(ds, "Sach");


                foreach (DataTable dt in ds.Tables)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        BookWS b = new BookWS();

                        b.iMaSach = int.Parse(dr["MaSach"].ToString());
                        b.sTenSach = dr["TenSach"].ToString();
                        b.iSoLuong = int.Parse(dr["SoLuong"].ToString());
                        b.iDonGia = int.Parse(dr["DonGia"].ToString());
                        b.sTenNXB = dr["TenNXB"].ToString();

                        ls.Add(b);
                    }
                }

                conn.Close();
                return ls;
            //}
            //return null;
        }

        /*************************************************************************************************************************/
        

        private string LayTenNhaXuatBan(string username)
        {
            // nếu số lượng trong kho sau khi đặt mua vẫn lớn hơn 10 thì cho phép đặt mua
            SqlCommand cmd = new SqlCommand("select NhaXuatBan.TenNXB, aspnet_Users.UserName "
                                                + "from NhaXuatBan left Join aspnet_Users "
                                                + "on NhaXuatBan.UserID = aspnet_Users.UserID " 
                                                + "WHERE aspnet_Users.UserName = '" + username + "' ", conn);

            // mở kết nối để thực thi lệnh truy vấn
            conn.Open();
            string TenNXB = (string)cmd.ExecuteScalar();
            conn.Close();

            return TenNXB;
        }
    }
}
